package com.travel.exception;

import com.travel.result.ResultCode;
import lombok.Getter;

/**
 * 自定义业务异常类
 * 用于处理业务逻辑中的异常情况，区别于系统异常
 * 例如：用户名已存在、密码错误等业务相关的异常
 */
@Getter
public class BusinessException extends RuntimeException {
    /**
     * 错误状态码
     * 与ResultCode中定义的状态码对应
     * 默认使用500（服务器错误）
     */
    private Integer code;

    /**
     * 只传入错误信息的构造方法
     * @param message 错误信息
     * 例如：throw new BusinessException("用户名已存在")
     */
    public BusinessException(String message) {
        super(message);
        this.code = ResultCode.ERROR;  // 默认使用500错误码
    }

    /**
     * 传入错误码和错误信息的构造方法
     * @param code 错误码
     * @param message 错误信息
     * 例如：throw new BusinessException(ResultCode.UNAUTHORIZED, "未登录")
     */
    public BusinessException(Integer code, String message) {
        super(message);
        this.code = code;
    }
} 